package 位运算;

import java.util.HashSet;
import java.util.Set;

public class JZ56数组中数字出现的次数II {

    /**
     * 在一个数组 nums 中除一个数字只出现一次之外，其他数字都出现了三次。请找出那个只出现一次的数字。
     *
     * 示例 1：
     * 输入：nums = [3,4,3,3]
     * 输出：4
     * 示例 2：
     * 输入：nums = [9,1,7,9,7,9,7]
     * 输出：1
     *  
     * 限制：
     * 1 <= nums.length <= 10000
     * 1 <= nums[i] < 2^31
     */

    /**
     * 直接裂开吧,使用简单的set或者map去写吧
     */
    public int singleNumber(int[] nums) {

        long sum1=0;
        long sum2=0;
        Set<Integer> set=new HashSet<>();
        for (int num : nums) {
            set.add(num);
            sum1+=num;
        }

        for (Integer num : set) {
            sum2+=num;
        }

        return (int)((((long)3*sum2)-sum1)/(long)2);
    }

}
